package com.qingcloud.df.executor.log;

import com.qingcloud.df.executor.pojo.JobInstanceLog;

/**
 * 组件文件类型日志实现
 *
 * @author wangjinnan
 */
public interface IComponentLogger {

    /**
     * 追加utf8单行日志
     *
     * @param instanceId 组件实例ID
     * @param content    日志内容，utf8编码
     * @return 追加是否成功
     */
    Boolean appendUtf8Log(Integer jobId, Integer instanceId, String softwareName, String content, String env);

    /**
     * 从已经读取的日志里面向前读日志
     *
     * @param instanceId 组件实例ID
     * @param preStart   往前读从哪行开始
     * @param afterStart 往后读从哪行开始
     * @param size       每次多少行日志
     * @param day        哪天的日志
     * @return 日志数据
     */
    JobInstanceLog preLog(Integer jobId, Integer instanceId, String softwareName, Long preStart, Long afterStart, Integer size, String day, String env);

    /**
     * 从已经读取的日志里面向后读日志
     *
     * @param instanceId 组件实例ID
     * @param preStart   往前读从哪行开始
     * @param afterStart 往后读从哪行开始
     * @param size       每次多少行日志
     * @param day        哪天的日志
     * @return 日志数据
     */
    JobInstanceLog afterLog(Integer jobId, Integer instanceId, String softwareName, Long preStart, Long afterStart,
                            Integer size, String day, String env);

    /**
     * 最新日志读取
     *
     * @param instanceId 实例ID
     * @param size       每次读多少行
     * @param day        读取哪天的日志
     * @return 文件内容
     */
    JobInstanceLog readNewestLog(Integer jobId, Integer instanceId, String softwareName, Integer size, String day, String env);

}
